/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pbl_cliente;

import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.List;
import javax.swing.JOptionPane;

/**
 *
 * @author tayane
 */
public class RecebeUsuarioChat implements Runnable{
    
    Socket socketChat;
    ServerSocket servidor;
    List<Socket> LISTA_USUARIOS_SOCKET;
    RecebeMsgChat recebeMsgs;
    String meuEmail;
    PBL_cliente cli;
    
    public RecebeUsuarioChat(ServerSocket servidor, String meuEmail, PBL_cliente cli){     
          this.servidor = servidor;  
          this.meuEmail = meuEmail;
          this.cli = cli;
    }
        
    public void run(){
       while (true) {
          try {
              socketChat = servidor.accept();
              System.out.println("Meu lado servidor recebeu um usuário");
              System.out.println("Nova conexão com o usuario " + socketChat.getInetAddress().getHostAddress());
              DataOutputStream saida = new DataOutputStream(this.socketChat.getOutputStream());
              String msg = null;
              System.out.println("Estou em Recebe Usuario: ContChat = " + cli.getContChat());
              if(cli.getContChat() > 0){
                  System.out.println("Estou em Recebe Usuario: ContChat = " + cli.getContChat());
                  int opcao = JOptionPane.showConfirmDialog(null, "Você está sendo convidado para participar de um chat. Você aceita?", "Convite - Chat", JOptionPane.YES_NO_OPTION);            
                  if(opcao == 0){ // 0 = SIM
                      cli.decContChat();
                      msg = "ConviteAceito";
                      saida.writeUTF(msg);
                      this.recebeMsgs = new RecebeMsgChat(socketChat, cli);
                      new Thread(this.recebeMsgs).start();
                  }
                  else{ // 1 = NÃO
                      msg = "ConviteRecusado";
                      saida.writeUTF(msg);
                      socketChat.close();
                  }
              }
              else{
                  JOptionPane.showMessageDialog(null, "Você recebeu um novo convite para participação em um chat, porém você só pode estar participando de dois ao mesmo tempo."); 
                  msg = "ConviteRecusado";
                  saida.writeUTF(msg);
              }
          } catch (IOException ex) {
              System.out.println("erro em recebe usuário: " + ex.getMessage());
          }
      }
   }
    
}
